#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <conio.h>

int Index = 0; //窗口索引

void gotoxy( int x, int y){
    COORD coord;
    coord.X = x;
    coord.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}

void clrscr() {
    system("cls");
}

int ReadMaxScore(){
	return 666;
}

int ReadScore(){
    return 99;
}

int CreatePauseWindow(){
        //CreatePauseWindow函数包含在CreatePlayWindow函数中
        //根据CreatePauseWindow函数的返回值ret在CreatePlayWindow函数中操作Index
        int ret;
        //屏幕初始化
		//清屏
		clrscr();
        //获取屏幕缓冲区信息
		HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    	CONSOLE_SCREEN_BUFFER_INFO csbi;
   		GetConsoleScreenBufferInfo(hConsole, &csbi);
   		//获取控制台宽度、高度
  	  	int consoleWidth = csbi.srWindow.Right - csbi.srWindow.Left + 1;
  	  	int consoleHeight = csbi.srWindow.Bottom - csbi.srWindow.Top + 1;
        //绘制边框，大小为控制台长、宽的2/5，偏移量为3/10
        int padding_width = consoleWidth*3/10;
        int padding_height = consoleHeight*3/10;
        //绘制窗口边界
        int i;
        //up
        gotoxy(padding_width,padding_height);
        for (i=padding_width;i<consoleWidth-padding_width;i++){
            putchar('*');
        }
        //down
        gotoxy(padding_width,consoleHeight-padding_height);
        for (i=padding_width;i<=consoleWidth-padding_width;i++){
            putchar('*');
        }
        //left
        for (i=padding_height;i<consoleHeight-padding_height;i++){
            gotoxy(padding_width,i);
            putchar('*');
        }
        //right
        for (i=padding_height;i<consoleHeight-padding_height;i++){
            gotoxy(consoleWidth-padding_width,i);
            putchar('*');
        }
        //绘制左上角信息
        //最高分,当前分
        gotoxy(0,0);
        printf ("历史最高分：%d\t当前得分：%d",ReadMaxScore(),ReadScore() );
        //WASD移动，F5刷新
        gotoxy(0,1);
        printf ("WASD移动\tF5刷新");
        //绘制窗口内容
        gotoxy(consoleWidth/2-4,consoleHeight*4/10);
        printf ("游 戏 暂 停");
        gotoxy(consoleWidth/2-2,consoleHeight*4/10+2);
        printf ("继续\"1\"");
        gotoxy(consoleWidth/2-3,consoleHeight*4/10+4);
        printf ("重新开始\"2\"");
        gotoxy(consoleWidth/2-3,consoleHeight*4/10+6);
        printf ("结束游戏\"3\"");
        gotoxy(consoleWidth/2-4,consoleHeight*4/10+8);
        printf ("返回主菜单\"Esc\"");
        //接收菜单栏输入
        int tmp;
        while (1){
            tmp = getch();
            //继续
            if (tmp == '1'){ 
                ret = 1;
                break;
            }
            //重新开始
            if (tmp == '2'){
                ret = 2;
                break;
            }
            //结束游戏
            if (tmp == '3'){
                ret = 3;
                break;
            }
            //Esc
            if (tmp == 0x1b){
                ret = 0;
                break;
            }
            //F5
            //注意F5时不要丢失最后一个操作窗口的返回值
            if ( tmp == 0x0 ){
                tmp=getch();
                if (tmp == 0x3f){
                    //保留最后一次操作的函数返回值
                    ret = CreatePauseWindow();
                    break;
                }
            }
        }
        //返回返回值ret，在CreatePlayWindow函数中操作Index
        return ret;
}